home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_aalib / INCLUDE / AALIB.H < prev   
C/C++ Source or Header  |  1999-09-17  |  9KB  |  292 lines

  1. #ifndef __AALIB_INCLUDED__
  2. #define __AALIB_INCLUDED__
  3. #include <stdio.h>
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #define AA_LIB_VERSION 1
  8. #define AA_LIB_MINNOR 2
  9. #define AA_LIB_VERSIONCODE 102000
  10.  
  11. #define AA_NATTRS 5
  12. #define AA_NPARAMS 5
  13.  
  14. #define AA_NONE 0        /*special keycodes */
  15. #define AA_RESIZE 258
  16. #define AA_MOUSE 259
  17. #define AA_UP 300
  18. #define AA_DOWN 301
  19. #define AA_LEFT 302
  20. #define AA_RIGHT 303
  21. #define AA_BACKSPACE 304
  22. #define AA_ESC 305
  23. #define AA_UNKNOWN 400
  24. #define AA_RELEASE 65536
  25.  
  26.  
  27. #define AA_NORMAL_MASK 1    /*masks for attributes */
  28. #define AA_DIM_MASK 2
  29. #define AA_BOLD_MASK 4
  30. #define AA_BOLDFONT_MASK 8
  31. #define AA_REVERSE_MASK 16
  32. #define AA_ALL 128
  33. #define AA_EIGHT 256
  34. #define AA_EXTENDED (AA_ALL|AA_EIGHT)
  35.  
  36. #define AA_NORMAL 0        /*attribute numbers */
  37. #define AA_DIM 1
  38. #define AA_BOLD 2
  39. #define AA_BOLDFONT 3
  40. #define AA_REVERSE 4
  41. #define AA_SPECIAL 5
  42.  
  43. #define AA_ERRORDISTRIB 1    /*dithering types + AA_NONE */
  44. #define AA_FLOYD_S 2
  45. #define AA_DITHERTYPES 3
  46.  
  47. #define AA_BUTTON1 1        /*mouse */
  48. #define AA_BUTTON2 2
  49. #define AA_BUTTON3 4
  50. #define AA_MOUSEMOVEMASK 1
  51. #define AA_MOUSEPRESSMASK 2
  52. #define AA_PRESSEDMOVEMASK 4
  53. #define AA_MOUSEALLMASK 7
  54. #define AA_HIDECURSOR 8
  55.  
  56. #define AA_SENDRELEASE 1
  57. #define AA_KBDALLMASK 1
  58.  
  59. #define AA_USE_PAGES 1        /*save format flags */
  60. #define AA_NORMAL_SPACES 8
  61.  
  62.  
  63. struct aa_hardware_params {
  64.     struct aa_font *font;
  65.     int supported;
  66.     int minwidth, minheight;
  67.     int maxwidth, maxheight;
  68.     int recwidth, recheight;
  69.     int mmwidth, mmheight;
  70.     int width, height;
  71.     double dimmul, boldmul;
  72. };
  73.  
  74. struct aa_context {
  75.     struct aa_driver *driver;
  76.     struct aa_kbddriver *kbddriver;
  77.     struct aa_mousedriver *mousedriver;
  78.     struct aa_hardware_params params,driverparams;
  79.     int mulx, muly;
  80.     int imgwidth, imgheight;
  81.     unsigned char *imagebuffer;
  82.     unsigned char *textbuffer;
  83.     unsigned char *attrbuffer;
  84.     unsigned short *table;
  85.     unsigned short *filltable;
  86.     struct parameters *parameters;
  87.     int cursorx, cursory, cursorstate;
  88.     int mousex, mousey, buttons,mousemode;
  89.     void (*resizehandler) (struct aa_context *);
  90.     void *driverdata;
  91.     void *kbddriverdata;
  92.     void *mousedriverdata;
  93. };
  94.  
  95. struct aa_driver {
  96.     char *shortname, *name;
  97.     int (*init) (struct aa_hardware_params *, void *, struct aa_hardware_params *,void **);
  98.     void (*uninit) (struct aa_context *);
  99.     void (*getsize) (struct aa_context *, int *, int *);
  100.     void (*setattr) (struct aa_context *, int);
  101.     void (*print) (struct aa_context *, char *);
  102.     void (*gotoxy) (struct aa_context *, int, int);
  103.     void (*flush) (struct aa_context *);
  104.     void (*cursormode) (struct aa_context *, int);
  105. };
  106.  
  107. struct aa_kbddriver {
  108.     char *shortname, *name;
  109.     int flags;
  110.     int (*init) (struct aa_context *, int mode);
  111.     void (*uninit) (struct aa_context *);
  112.     int (*getkey) (struct aa_context *, int);
  113. };
  114.  
  115. struct aa_mousedriver {
  116.     char *shortname, *name;
  117.     int flags;
  118.     int (*init) (struct aa_context *, int mode);
  119.     void (*uninit) (struct aa_context *);
  120.     void (*getmouse) (struct aa_context *, int *, int *, int *);
  121.     void (*cursormode) (struct aa_context *,int);
  122. };
  123.  
  124. struct aa_renderparams {
  125.     int bright, contrast;
  126.     float gamma;
  127.     int dither;
  128.     int inversion;
  129.     int randomval;
  130. };
  131.  
  132. struct aa_edit {
  133.     int maxsize;
  134.     char *data;
  135.     int cursor;
  136.     int clearafterpress;
  137.     int printpos;
  138.     int x, y, size;
  139.     struct aa_context *c;
  140. };
  141.  
  142. struct parameters {
  143.     unsigned int p[AA_NPARAMS];
  144. };
  145.  
  146. struct aa_font {
  147.     unsigned char *data;
  148.     int height;
  149.     char *name;
  150.     char *shortname;
  151. };
  152.  
  153. struct aa_format {
  154.     int width, height;
  155.     int pagewidth, pageheight;
  156.     int flags;
  157.     int supported;
  158.     struct aa_font *font;
  159.     char *formatname;
  160.     char *extension;
  161.     /*fields after this line may change in future versions*/
  162.     char *head;
  163.     char *end;
  164.     char *newline;
  165.     char *prints[AA_NATTRS];
  166.     char *begin[AA_NATTRS];
  167.     char *ends[AA_NATTRS];
  168.     char **conversions;    
  169. };
  170.  
  171. struct aa_savedata {
  172.     char *name;
  173.     struct aa_format *format;
  174.     FILE *file; /*You might specify filename by this way too, in case name is NULL*/
  175. };
  176.  
  177. struct aa_linkedlist {
  178.     char *text;
  179.     struct aa_linkedlist *next, *previous;
  180. };
  181.  
  182. typedef struct aa_context aa_context;
  183. typedef struct aa_linkedlist aa_linkedlist;
  184. typedef struct aa_linkedlist aa_reclist;
  185. typedef struct aa_renderparams aa_renderparams;
  186. typedef struct aa_hardwareparams aa_hardware_params;
  187. typedef struct aa_driver aa_driver;
  188. typedef struct aa_font aa_font;
  189. typedef struct aa_format aa_format;
  190. typedef struct aa_savedata aa_savedata;
  191. typedef int aa_palette[256];
  192.  
  193. extern struct aa_driver save_d, mem_d;
  194. extern char *aa_help;
  195. extern struct aa_format aa_htmlk_format, *aa_formats[];
  196. extern struct aa_format aa_nhtml_format, aa_html_format, aa_html_alt_format,
  197.     aa_ansi_format, aa_text_format, aa_more_format, aa_hp_format,
  198.     aa_hp2_format, aa_irc_format, aa_zephyr_format;
  199. extern struct aa_font *aa_fonts[];
  200. extern int nfonts;
  201. extern struct aa_font aa_font8, aa_font14, aa_font16, aa_font9, aa_fontline, aa_fontgl,
  202.  aa_fontX13, aa_fontX16, aa_fontX13B, aa_fontcourier, aa_fontvyhen;
  203. extern char *aa_dithernames[];
  204. extern struct aa_hardware_params aa_defparams;
  205. extern struct aa_renderparams aa_defrenderparams;
  206. extern struct aa_driver *aa_drivers[], curses_d, dos_d, linux_d, slang_d,
  207.  stdout_d, stderr_d, X11_d, os2vio_d;
  208. extern struct aa_kbddriver *aa_kbddrivers[], kbd_curses_d, kbd_slang_d,
  209.  kbd_stdin_d, kbd_dos_d, kbd_X11_d, kbd_os2_d;
  210. extern struct aa_mousedriver *aa_mousedrivers[], mouse_curses_d, mouse_gpm_d,
  211.  mouse_X11_d, mouse_dos_d, mouse_os2_d;
  212. extern aa_linkedlist *aa_kbdrecommended, *aa_mouserecommended, *aa_displayrecommended;
  213.  
  214.  
  215. #define aa_callnonull(c,x) ((x)!=NULL?((x)(c)):0)
  216. #define aa_scrwidth(a) ((a)->params.width)
  217. #define aa_scrheight(a) ((a)->params.height)
  218. #define aa_mmwidth(a) ((a)->params.mmwidth)
  219. #define aa_mmheight(a) ((a)->params.mmheight)
  220. #define aa_imgwidth(a) ((a)->imgwidth)
  221. #define aa_imgheight(a) ((a)->imgheight)
  222. #define aa_putpixel(c,x,y,color) ((c)->imagebuffer[(x)+(y)*(aa_imgwidth(c))]=(color))
  223. #define aa_image(c) ((c)->imagebuffer)
  224. #define aa_text(c) ((c)->textbuffer)
  225. #define aa_attrs(c) ((c)->attrbuffer)
  226. #define aa_setpalette(palette,index,r,g,b) ((palette)[index]=(((r)*30+(g)*59+(b)*11)>>8))
  227. #define aa_recommendhikbd(t) aa_recommendhi(&aa_kbdrecommended,t);
  228. #define aa_recommendhimouse(t) aa_recommendhi(&aa_mouserecommended,t);
  229. #define aa_recommendhidisplay(t) aa_recommendhi(&aa_displayrecommended,t);
  230. #define aa_recommendlowkbd(t) aa_recommendlow(&aa_kbdrecommended,t);
  231. #define aa_recommendlowmouse(t) aa_recommendlow(&aa_mouserecommended,t);
  232. #define aa_recommendlowdisplay(t) aa_recommendlow(&aa_displayrecommended,t);
  233.  
  234. /*automatical init functions */
  235. aa_context *aa_autoinit(struct aa_hardware_params *params);
  236. int aa_autoinitkbd(struct aa_context *context, int mode);
  237. int aa_autoinitmouse(struct aa_context *c, int mode);
  238. void aa_recommendhi(aa_linkedlist ** l, char *name);
  239. void aa_recommendlow(aa_linkedlist ** l, char *name);
  240. char *aa_getfirst(aa_linkedlist ** l);
  241.  
  242. /*init functions */
  243. aa_context *aa_init(struct aa_driver *driver, struct aa_hardware_params *defparams, void *driverdata);
  244. int aa_initkbd(struct aa_context *context, struct aa_kbddriver *drv, int mode);
  245. int aa_initmouse(struct aa_context *c, struct aa_mousedriver *d, int mode);
  246.  
  247. /*uninicializing functions */
  248. void aa_close(aa_context * c);
  249. void aa_uninitkbd(struct aa_context *context);
  250. void aa_uninitmouse(struct aa_context *context);
  251.  
  252. /*rendering functions */
  253. void aa_fastrender(aa_context * c, int x1, int y1, int x2, int y2);
  254. void aa_render(aa_context * c, aa_renderparams * p, int x1, int y1, int x2, int y2);
  255. void aa_renderpalette(aa_context * c, aa_palette table, aa_renderparams * p, int x1, int y1, int x2, int y2);
  256. aa_renderparams *aa_getrenderparams(void);
  257. void aa_flush(aa_context * c);
  258.  
  259. /*text i/o functions */
  260. void aa_puts(aa_context * c, int x, int y, int attr, char *s);
  261. int aa_printf(aa_context *c, int x, int y, int attr, char *fmt, ...);
  262. void aa_gotoxy(aa_context * c, int x, int y);
  263. void aa_hidecursor(aa_context * c);
  264. void aa_showcursor(aa_context * c);
  265. void aa_getmouse(aa_context * c, int *x, int *y, int *b);
  266. void aa_hidemouse(aa_context *c);
  267. void aa_showmouse(aa_context *c);
  268.  
  269. /*hardware parameters control */
  270. int aa_registerfont(struct aa_font *f);
  271. void aa_setsupported(aa_context * c, int supported);
  272. void aa_setfont(aa_context * c, struct aa_font *font);
  273.  
  274. /*keyboard functions */
  275. int aa_getevent(aa_context * c, int wait);
  276. int aa_getkey(aa_context * c, int wait);
  277.  
  278. /*resize functions */
  279. int aa_resize(aa_context * c);
  280. void aa_resizehandler(aa_context * c, void (*handler) (aa_context *));
  281.  
  282. /*utility */
  283. int aa_parseoptions(struct aa_hardware_params *p, aa_renderparams * r, int *argc, char **argv);
  284. void aa_edit(aa_context * c, int x, int y, int size, char *s, int maxsize);
  285. struct aa_edit *aa_createedit(aa_context * c, int x, int y, int size, char *s, int maxsize);
  286. void aa_editkey(struct aa_edit *e, int c);
  287.  
  288. #ifdef __cplusplus
  289. }
  290. #endif
  291. #endif
  292.